package com.yidu.logisticssystem.service.impl;

import com.github.pagehelper.PageInfo;
import com.yidu.logisticssystem.dao.LogisticsMapDao;
import com.yidu.logisticssystem.dao.LogisticsSiteDao;
import com.yidu.logisticssystem.entity.LogisticsMap;
import com.yidu.logisticssystem.entity.LogisticsSite;
import com.yidu.logisticssystem.entity.vo.SiteStaffVo;
import com.yidu.logisticssystem.entity.vo.SiteVo;
import com.yidu.logisticssystem.service.LogisticsSiteService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

/**
 * 站点(LogisticsSite)表服务实现类
 *
 * @author makejava
 * @since 2021-03-08 16:46:54
 */
@Service("logisticsSiteService")
public class LogisticsSiteServiceImpl implements LogisticsSiteService {
    @Resource
    private LogisticsSiteDao logisticsSiteDao;
    @Resource
    private LogisticsMapDao logisticsMapDao;

    /**
     * 通过ID查询单条数据
     *
     * @param siteId 主键
     * @return 实例对象
     */
    @Override
    public SiteVo queryById(Integer siteId) {
        String str = "";
        SiteVo siteVo = this.logisticsSiteDao.queryById(siteId);
        System.out.println("此为impl层");
        System.out.println("查找到的数据是：" + siteVo.getMapName() + "   " + siteVo.getSiteArea());
        if (siteVo.getSiteArea().length() == 7) {
            //查询上级id
            List<LogisticsMap> cityList = logisticsMapDao.selectfufind(siteVo.getSiteArea());
            //list集合遍历
            for (LogisticsMap city : cityList) {
                //根据传回的区级id遍历找到上级市级id
                List<LogisticsMap> preList = logisticsMapDao.selectfufind(city.getMapId());
                //list集合遍历
                for (LogisticsMap pre : preList) {
                    //往str中放入省
                    str = pre.getMapName();
                    //往str中放入市
                    str += city.getMapName();
                    //往str中放入区
                    str += siteVo.getMapName();
                }
            }
        } else if (siteVo.getSiteArea().length() == 3) {
            //传回的id为市级id
            //查询上级id
            List<LogisticsMap> preList = logisticsMapDao.selectfufind(siteVo.getSiteArea());
            for (LogisticsMap pre : preList) {
                //往str中放入省
                str = pre.getMapName();
                //往str中放入市
                str+= siteVo.getMapName();
            }
        }else if(siteVo.getSiteArea().length() == 2){
            str=siteVo.getMapName();
        }
            //将str传输到siteVo中返回
            siteVo.setMapName(str);
            return siteVo;
    }


    /**
     * 查询多条数据
     *
     * @param offset 查询起始位置
     * @param limit  查询条数
     * @return 对象列表
     */
    @Override
    public List<SiteVo> queryAllByLimit(int offset, int limit) {
        return this.logisticsSiteDao.queryAllByLimit(offset, limit);
    }

    /**
     * 新增数据
     *
     * @param vo 实例对象
     * @return 实例对象
     */
    @Override
    public SiteVo insert(SiteVo vo) {
        this.logisticsSiteDao.insert(vo);
        return vo;
    }

    /**
     * 修改数据
     *
     * @param vo 实例对象
     * @return 实例对象
     */
    @Override
    public SiteVo update(SiteVo vo) {
        this.logisticsSiteDao.update(vo);
        return this.queryById(vo.getSiteId());
    }

    /**
     * 通过主键删除数据
     *
     * @param siteId 主键
     * @return 是否成功
     */
    @Override
    public boolean deleteById(Integer siteId) {
        return this.logisticsSiteDao.deleteById(siteId) > 0;
    }

    @Override
    public List<SiteVo> queryAll(SiteVo vo) {
        String str="";
        List<SiteVo> list = this.logisticsSiteDao.queryAll(vo);
        //根据站点中mapId的编号查询mapName
        for (SiteVo s:list) {
            //将遍历中的list中的siteArea转换为mapName
            str=logisticsMapDao.queryById(s.getSiteArea().substring(0,2)).getMapName()+logisticsMapDao.queryById(s.getSiteArea().substring(2,5)).getMapName()+s.getMapName();
            s.setMapName(str);
            List<SiteStaffVo> siteStaffVos=logisticsSiteDao.queryBySiteBoss(s.getSiteBoss());
            for (SiteStaffVo f:siteStaffVos){
                s.setSiteBoss(f.getStaffName());
            }
        }
        return list;
    }

    @Override
    public List<LogisticsSite> selectidmap(String siteBoss) {
        return logisticsSiteDao.selectidmap(siteBoss);
    }

    @Override
    public List<SiteStaffVo> queryBySiteBoss(String siteBoss) {

        return logisticsSiteDao.queryBySiteBoss(siteBoss);
    }
}
